/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CommandCadastrar;

import Cliente.Controller.CadastroPresenter;
import Cliente.Entidade.Cliente;
import Cliente.Model.CadastrarPaciente;
import Cliente.Model.ConsultarPaciente;
import Cliente.util.CalculaRCQ;
import Cliente.util.DesabilitaCampos;
import Cliente.util.SelecionarSexo;
import javax.swing.JOptionPane;

/**
 *
 * @author Caio
 */
public class CadastrarCommand extends AbstractCadastrarCommand {
    
    
    CadastroPresenter cadastro;
    private DesabilitaCampos dc = new DesabilitaCampos();
    private SelecionarSexo ss = new SelecionarSexo();
    private CalculaRCQ calcularcq;
    private ConsultarPaciente consultarcliente = new ConsultarPaciente();
    
    public CadastrarCommand(CadastroPresenter receptor){
        super(receptor);
        cadastro=receptor;
    }

    @Override
    public void execute() {
        cadastro.setIacImc();
        incluiCliente();
    }
    public String ajustaRCQ() {
        calcularcq = new CalculaRCQ((Double.parseDouble(cadastro.getView().getTxtQuadril().getText())), (Double.parseDouble(cadastro.getView().getTxtCintura().getText())), (Integer.parseInt(cadastro.getView().getTxtIdade().getText())), ss.SelecionaSexo(cadastro.getView().getRadioFeminino(),cadastro.getView().getRadioMasculino()));
        return calcularcq.calcularRCQ();
    }
    
    
    public void incluiCliente() {
        if (consultarcliente.consultaCliente(cadastro.getView().getFtfCPF().getText())) {
            JOptionPane.showMessageDialog(cadastro.getView(), " O cliente já foi cadastrado!", "Erro", JOptionPane.ERROR_MESSAGE);
        } else {
            if (cadastro.getView().getTxtNome().getText().trim().equals("")) {
                JOptionPane.showMessageDialog(cadastro.getView(), "Informe o nome do cliente!", "Erro", JOptionPane.ERROR_MESSAGE);
                cadastro.getView().getTxtNome().requestFocus();
            } else {
                Cliente cliente = new Cliente();
                cliente.setNome(cadastro.getView().getTxtNome().getText().trim());
                cliente.setCpf(cadastro.getView().getFtfCPF().getText().trim());
                cliente.setAltura(Double.parseDouble(cadastro.getView().getTxtAltura().getText().trim()));
                cliente.setSexo(ss.SelecionaSexo(cadastro.getView().getRadioFeminino(),cadastro.getView().getRadioMasculino()));
                cliente.setIdade(cadastro.ajustaIdade(cadastro.getView().getTxtIdade().getText().trim()));
                cliente.setPeso(Double.parseDouble(cadastro.getView().getTxtPeso().getText().trim()));
                cliente.setIAC(cadastro.getIac());
                cliente.setIMC(cadastro.getImc());
                cliente.setRCQ(ajustaRCQ());
                cliente.setQuadril(Double.parseDouble(cadastro.getView().getTxtQuadril().getText().trim()));
                cliente.setCintura(Double.parseDouble(cadastro.getView().getTxtCintura().getText().trim()));
                CadastrarPaciente clienteBD = new CadastrarPaciente();
                if (clienteBD.incluiCliente(cliente)) {
                    JOptionPane.showMessageDialog(cadastro.getView(), "Cliente cadastrado com sucesso!", "Confirmação", JOptionPane.INFORMATION_MESSAGE);
                    dc.desabilitaCampos(cadastro.getView().getTxtNome(),cadastro.getView().getTxtAltura(),cadastro.getView().getTxtCintura(),cadastro.getView().getTxtIdade(),cadastro.getView().getTxtPeso(), cadastro.getView().getTxtQuadril(), cadastro.getView().getRadioFeminino(), cadastro.getView().getRadioMasculino(),cadastro.getView().getFtfCPF());
                } else {
                    JOptionPane.showMessageDialog(cadastro.getView(), "Erro ao cadastrar o cliente!", "Erro", JOptionPane.ERROR_MESSAGE);
                }
            }
        }


    }

    
    
}
    
    

